home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 1.iso / toolbox / documents / OpenGL / opengldoc / glspec / visual_info.spec < prev    next >
Encoding:
Text File  |  1996-11-11  |  12.5 KB  |  317 lines

  1. Name
  2.  
  3.     EXT_visual_info
  4.  
  5. Name Strings
  6.  
  7.     GLX_EXT_visual_info
  8.  
  9. Version
  10.  
  11.     $Date: 1996/04/02 00:09:33 $ $Revision: 1.2 $
  12.  
  13. Number
  14.  
  15.     28
  16.  
  17. Dependencies
  18.  
  19.     SGIS_multisample affects the definition of this extension
  20.  
  21. Overview
  22.  
  23.     This extension allows the user to request a particular X visual 
  24.     type to be associated with a GLX visual, and allows the user
  25.     to query the X visual type underlying a GLX visual.
  26.  
  27.     In addition, this extension provides a means to request a visual
  28.     with a transparent pixel and to query whether a visual supports a
  29.     transparent pixel value and the value of the transparent pixel.
  30.     Note that the notion of level and transparent pixels are orthogonal as
  31.     both layer 1 and layer 0 visuals may or may not have a transparent pixel
  32.     value.
  33.  
  34. Issues
  35.     The X server allows two types of transparency: pixel and mask.
  36.     For mask, any pixel matching the transparency mask is transparent.
  37.     Do we want to include masks? GLX_TRANSPARENT_PIXEL has been changed
  38.     from a boolean to an enum to allow for this possibility.
  39.  
  40.     Alpha is no longer included in the transparent pixel, although it 
  41.     may be useful in the future. Thus, we allow the TRANSPARENT_ALPHA_VALUE
  42.     to be queried -- even though it is not used. In the future
  43.     a GLX_TRANSPARENT_ALPHA or GLX_TRANSPARENT_RGBA transparency
  44.     mode could be added.
  45.  
  46.     Keep tokens for GRAY_SCALE and STATIC_GRAY for future use, even
  47.     though they don't match visuals now.
  48.  
  49.     Should glXChooseVisual ignore GLX_TRANSPARENT_INDEX_VALUE_EXT,
  50.     GLX_TRANSPARENT_RED_VALUE_EXT, GLX_TRANSPARENT_GREEN_VALUE_EXT,
  51.     GLX_TRANSPARENT_BLUE_VALUE_EXT, and GLX_TRANSPARENT_ALPHA_VALUE_EXT
  52.     settings in attrib_list if GLX_TRANSPARENT_TYPE_EXT is not set (either 
  53.     explicitly or implicitly) to a value other than GLX_NONE_EXT? Maybe it 
  54.     should just match the requested attributes -- even if the request doesn't 
  55.     make sense.
  56.  
  57. New Procedures and Functions
  58.  
  59.     None
  60.  
  61. New Tokens
  62.  
  63.     Accepted by the <attrib> parameter of glXGetConfig, and by the
  64.     <attrib_list> parameter of glXChooseVisual: 
  65.  
  66.     GLX_X_VISUAL_TYPE_EXT        0x22
  67.     GLX_TRANSPARENT_TYPE_EXT    0x23
  68.     GLX_TRANSPARENT_INDEX_VALUE_EXT    0x24
  69.     GLX_TRANSPARENT_RED_VALUE_EXT    0x25
  70.     GLX_TRANSPARENT_GREEN_VALUE_EXT    0x26
  71.     GLX_TRANSPARENT_BLUE_VALUE_EXT    0x27
  72.     GLX_TRANSPARENT_ALPHA_VALUE_EXT    0x28
  73.  
  74.     Returned by glXGetConfig, and accepted by the <attrib_list>
  75.     parameter of glXChooseVisual (following the GLX_X_VISUAL_TYPE_EXT 
  76.     token):
  77.  
  78.     GLX_TRUE_COLOR_EXT        0x8002
  79.     GLX_DIRECT_COLOR_EXT        0x8003
  80.     GLX_PSEUDO_COLOR_EXT        0x8004
  81.     GLX_STATIC_COLOR_EXT        0x8005
  82.      GLX_GRAY_SCALE_EXT        0x8006
  83.      GLX_STATIC_GRAY_EXT        0x8007
  84.  
  85.     Returned by glXGetConfig, and accepted by the <attrib_list>
  86.     parameter of glXChooseVisual (following the GLX_TRANSPARENT_TYPE_EXT
  87.     token):
  88.  
  89.     GLX_NONE_EXT            0x8000
  90.     GLX_TRANSPARENT_RGB_EXT        0x8008
  91.     GLX_TRANSPARENT_INDEX_EXT    0x8009
  92.  
  93. Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
  94.  
  95.     None
  96.  
  97. Additions to Chapter 3 of the 1.0 Specification (Rasterization)
  98.  
  99.     None
  100.  
  101. Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and
  102. the Framebuffer)
  103.  
  104.  
  105. Additions to Chapter 5 of the 1.0 Specification (Special Functions)
  106.  
  107.     None
  108.  
  109. Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
  110.  
  111.     None
  112.  
  113. Additions to the GLX Specification
  114.  
  115.     The X visual type of a GLX visual can be queried using glXGetConfig().
  116.  
  117.     The visual attribute GLX_TRANSPARENT_TYPE_EXT indicates whether or not
  118.     the visual supports transparency, and if it does support transparency, 
  119.     what type of transparency is available. If the attribute is set to 
  120.     GLX_NONE_EXT then windows created with the visual will not have any 
  121.     transparent pixels. If the attribute is GLX_TRANSPARENT_RGB_EXT or
  122.     GLX_TRANSPARENT_INDEX_EXT then the visual supports transparency.
  123.     GLX_TRANSPARENT_RGB_EXT is only applicable to TrueColor and DirectColor 
  124.     visuals: a transparent pixel will be drawn when the red, green and blue 
  125.     values which are read from the framebuffer are equal to 
  126.     GLX_TRANSPARENT_RED_VALUE_EXT, GLX_TRANSPARENT_GREEN_VALUE_EXT and 
  127.     GLX_TRANSPARENT_BLUE_VALUE_EXT, respectively. For PseudoColor and 
  128.     StaticColor the transparency mode GLX_TRANSPARENT_INDEX_EXT is used.
  129.     In this case, a transparent pixel will be drawn when the index value that
  130.     is read from the framebuffer is equal to GLX_TRANSPARENT_INDEX_VALUE_EXT.
  131.  
  132.     If GLX_TRANSPARENT_TYPE_EXT is GLX_NONE_EXT or GLX_TRANSPARENT_RGB_EXT, 
  133.     then the value returned for GLX_TRANSPARENT_INDEX_VALUE_EXT is undefined.
  134.     If GLX_TRANSPARENT_TYPE_EXT is GLX_NONE_EXT or GLX_TRANSPARENT_INDEX_EXT,
  135.     then the values returned for GLX_TRANSPARENT_RED_VALUE_EXT, 
  136.     GLX_TRANSPARENT_GREEN_VALUE_EXT, and GLX_TRANSPARENT_BLUE_VALUE_EXT are
  137.     undefined. When defined, GLX_TRANSPARENT_RED_VALUE_EXT, 
  138.     GLX_TRANSPARENT_GREEN_VALUE_EXT, and GLX_TRANSPARENT_BLUE_VALUE_EXT are 
  139.     integer framebuffer values between 0 and the maximum framebuffer value for 
  140.     the component. For example, GLX_TRANSPARENT_RED_VALUE_EXT will range 
  141.     between 0 and (2**GLX_RED_SIZE)-1.  (GLX_TRANSPARENT_ALPHA_VALUE_EXT is 
  142.     for future use.)
  143.  
  144.     Attribute          Type        Notes
  145.     ---------          ----        -----
  146.     GLX_USE_GL          boolean   True if OpenGL rendering is supported
  147.     GLX_BUFFER_SIZE          integer   depth of the color buffer
  148.     GLX_LEVEL          integer   frame buffer level
  149.     GLX_RGBA          boolean   True if in RGBA rendering is supported
  150.     GLX_DOUBLEBUFFER      boolean   True if color buffers have front/back pairs
  151.     GLX_STEREO          boolean   True if color buffers have left/right pairs
  152.     GLX_AUX_BUFFERS          integer   number of auxiliary color buffers
  153.     GLX_RED_SIZE          integer   number of bits of Red in the framebuffer
  154.     GLX_GREEN_SIZE          integer   number of bits of Green in the framebuffer
  155.     GLX_BLUE_SIZE          integer   number of bits of Blue in the framebuffer
  156.     GLX_ALPHA_SIZE          integer   number of bits of Alpha in the framebuffer
  157.     GLX_DEPTH_SIZE          integer   number of bits in the depth buffer
  158.     GLX_STENCIL_SIZE      integer   number of bits in the stencil buffer
  159.     GLX_ACCUM_RED_SIZE      integer   number of bits of Red in the accumulation buffer
  160.     GLX_ACCUM_GREEN_SIZE      integer   number of bits of Green in the accumulation buffer
  161.     GLX_ACCUM_BLUE_SIZE      integer   number of bits of Blue in the accumulation buffer
  162.     GLX_ACCUM_ALPHA_SIZE      integer   number of bits of Alpha in the accumulation buffer
  163.     GLX_SAMPLE_BUFFERS_SGIS      integer   number of multisample buffers
  164.     GLX_SAMPLES_SGIS      integer   number of samples stored in each multisample buffer
  165.     GLX_X_VISUAL_TYPE_EXT      integer   X visual type of the GLX visual
  166.     GLX_TRANSPARENT_TYPE_EXT enum       None, TRANSPARENT_RGB_EXT, or TRANSPARENT_INDEX_EXT
  167.     GLX_TRANSPARENT_INDEX_VALUE_EXT integer   transparent index value.
  168.     GLX_TRANSPARENT_RED_VALUE_EXT   integer transparent red value.
  169.     GLX_TRANSPARENT_GREEN_VALUE_EXT integer transparent green value.
  170.     GLX_TRANSPARENT_BLUE_VALUE_EXT  integer transparent blue value.
  171.     GLX_TRANSPARENT_ALPHA_VALUE_EXT integer transparent alpha value.
  172.  
  173.     Table 1: Configuration attributes
  174.  
  175.     glXGetConfig returns one of the values in table 2 (below) when called
  176.     with attribute name GLX_X_VISUAL_TYPE_EXT.
  177.  
  178.     GLX token name            X Visual Type
  179.     --------------            -------------
  180.     GLX_TRUE_COLOR_EXT        TrueColor
  181.     GLX_DIRECT_COLOR_EXT        DirectColor
  182.     GLX_PSEUDO_COLOR_EXT        PseudoColor
  183.     GLX_STATIC_COLOR_EXT        StaticColor
  184.      GLX_GRAY_SCALE_EXT        GrayScale
  185.      GLX_STATIC_GRAY_EXT        StaticGray
  186.  
  187.     Table 2: X visual type token values
  188.  
  189.     Replace the GLX specification discussion of glXChooseVisual with
  190.     the following text:
  191.  
  192.     glXChooseVisual is used to find a visual that matches the client's
  193.     specified attributes.
  194.  
  195.     XVisualInfo* glXChooseVisual( Display *dpy, int screen,
  196.                       int *attrib_list );
  197.  
  198.     glXChooseVisual returns a pointer to an XVisualInfo structure
  199.     describing the visual that best meets a minimum specification.  The
  200.     boolean GLX attributes of the visual that is returned will match the
  201.     specification exactly.  The integer GLX attributes will meet or exceed
  202.     the specified minimum values.  The enumerated GLX attributes are
  203.     matched in an attribute-specific manner.  If no conforming visual
  204.     exists, NULL is returned.
  205.  
  206.     The enumerated attribute GLX_X_VISUAL_TYPE_EXT specifies which X
  207.     visual type is required for the requested GLX visual.  
  208.     
  209.     If GLX_RGBA is in <attrib_list>, then only GLX_TRUE_COLOR_EXT and 
  210.     GLX_DIRECT_COLOR_EXT can produce a match. If GLX_X_VISUAL_TYPE_EXT
  211.     is not in <attrib_list>, and if all other attributes are equivalent,
  212.     then a TrueColor visual will be chosen in preference to a DirectColor
  213.     visual.
  214.  
  215.     If GLX_RGBA is not in <attrib_list>, then only GLX_PSEUDO_COLOR_EXT and 
  216.     GLX_STATIC_COLOR_EXT can produce a match. If GLX_X_VISUAL_TYPE_EXT
  217.     is not in <attrib_list>, and if all other attributes are equivalent,
  218.     then a PseudoColor visual will be chosen in preference to a StaticColor
  219.     visual.
  220.  
  221.     The tokens GLX_GRAY_SCALE_EXT and GLX_STATIC_GRAY_EXT will not match
  222.     current OpenGL enabled visuals, but are included for future use.
  223.  
  224.     If GLX_TRANSPARENT_TYPE_EXT is not included in <attrib_list>,
  225.     then the attribute will be treated as a "don't care" and a
  226.     visual with or without a transparent pixel may be chosen.
  227.     If GLX_TRANSPARENT_TYPE_EXT is not included in <attrib_list>, or if it
  228.     is set to GLX_NONE_EXT, then inclusion of GLX_TRANSPARENT_INDEX_VALUE_EXT, 
  229.     GLX_TRANSPARENT_RED_VALUE_EXT, GLX_TRANSPARENT_GREEN_VALUE_EXT, 
  230.     GLX_TRANSPARENT_BLUE_VALUE_EXT, or GLX_TRANSPARENT_ALPHA_VALUE_EXT
  231.     will be ignored. 
  232.  
  233.     All boolean GLX attributes default to False except GLX_USE_GL, which
  234.     defaults to True.  All integer attributes default to zero.
  235.  
  236.     Default specifications are superseded by the attributes included in
  237.     <attrib_list>.  Integer attributes are immediately followed by the
  238.     corresponding desired value.  Boolean attributes appearing in
  239.     <attrib_list> have an implicit True value; such attributes are never
  240.     followed by an explicit True or False value.  The list is terminated
  241.     with None.
  242.  
  243.     To free the data returned, use XFree().
  244.  
  245.     NULL is returned if an undefined GLX attribute is encountered, or
  246.     if an unacceptable enumerated attribute value is encountered.
  247.  
  248. GLX Protocol
  249.  
  250.     Seven new property type/property value pairs are included in the property 
  251.     list of each visual returned by glXGetVisualConfigs. The property 
  252.     type/property value pairs are encoded as
  253.  
  254.     4           ENUM                    property type
  255.          0x22            GLX_X_VISUAL_TYPE_EXT        
  256.     4           ENUM                    property value
  257.         0x8002            GLX_TRUE_COLOR_EXT    
  258.         0x8003            GLX_DIRECT_COLOR_EXT
  259.         0x8004            GLX_PSEUDO_COLOR_EXT
  260.         0x8005            GLX_STATIC_COLOR_EXT    
  261.         0x8006            GLX_GRAY_SCALE_EXT
  262.         0x8007            GLX_STATIC_GRAY_EXT
  263.  
  264.     4            ENUM            property type
  265.                 0x23                    GLX_TRANSPARENT_TYPE_EXT
  266.     4           ENUM                    property value
  267.         0x8000            GLX_NONE_EXT
  268.         0x8008            GLX_TRANSPARENT_RGB_EXT
  269.         0x8009            GLX_TRANSPARENT_INDEX_EXT
  270.  
  271.     4           ENUM                    property type
  272.                 0x24                    GLX_TRANSPARENT_INDEX_VALUE_EXT
  273.     4           BOOL32                  property value
  274.  
  275.     4           ENUM                    property type
  276.                 0x25                    GLX_TRANSPARENT_RED_VALUE_EXT
  277.     4           INT32                   property value
  278.  
  279.     4           ENUM                    property type
  280.                 0x26                    GLX_TRANSPARENT_GREEN_VALUE_EXT
  281.     4           INT32                   property value
  282.  
  283.     4           ENUM                    property type
  284.                 0x27                    GLX_TRANSPARENT_BLUE_VALUE_EXT
  285.     4           INT32                   property value
  286.  
  287.     4           ENUM                    property type
  288.                 0x28                    GLX_TRANSPARENT_ALPHA_VALUE_EXT
  289.     4           INT32                   property value
  290.  
  291.  
  292. Dependencies on SGIS_multisample
  293.  
  294.     If SGIS_multisample is not supported, references to
  295.     GLX_SAMPLE_BUFFERS_SGIS and GLX_SAMPLES_SGIS in this document are
  296.     invalid and should be ignored.
  297.  
  298. Errors
  299.  
  300.     None
  301.  
  302. New State
  303.  
  304.     None
  305.  
  306. New Implementation Dependent State
  307.  
  308.     Get Value                  Get Command    Type
  309.     ---------                  -----------    ----
  310.     GLX_X_VISUAL_TYPE_EXT          glXGetConfig    Z6
  311.     GLX_TRANSPARENT_TYPE_EXT         glXGetConfig
  312.     GLX_TRANSPARENT_INDEX_VALUE_EXT    glXGetConfig    
  313.     GLX_TRANSPARENT_RED_VALUE_EXT       glXGetConfig
  314.     GLX_TRANSPARENT_GREEN_VALUE_EXT     glXGetConfig
  315.     GLX_TRANSPARENT_BLUE_VALUE_EXT      glXGetConfig
  316.     GLX_TRANSPARENT_ALPHA_VALUE_EXT     glXGetConfig
  317.